From 11207505e3dbc87a8dfc419ffb10a42489e93464 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Thu, 11 May 2017 21:52:18 +0200 Subject: [PATCH] gizmo: Unparent all child widgets in finalize --- gtk/gtkgizmo.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gtk/gtkgizmo.c b/gtk/gtkgizmo.c index 38cd3d56b1..f80fabe3ee 100644 --- a/gtk/gtkgizmo.c +++ b/gtk/gtkgizmo.c @@ -50,11 +50,33 @@ gtk_gizmo_snapshot (GtkWidget *widget, GTK_WIDGET_CLASS (gtk_gizmo_parent_class)->snapshot (widget, snapshot); } +static void +gtk_gizmo_finalize (GObject *object) +{ + GtkGizmo *self = GTK_GIZMO (object); + GtkWidget *widget; + + widget = _gtk_widget_get_first_child (GTK_WIDGET (self)); + while (widget != NULL) + { + GtkWidget *next = _gtk_widget_get_next_sibling (widget); + + gtk_widget_unparent (widget); + + widget = next; + } + + G_OBJECT_CLASS (gtk_gizmo_parent_class)->finalize (object); +} + static void gtk_gizmo_class_init (GtkGizmoClass *klass) { + GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + object_class->finalize = gtk_gizmo_finalize; + widget_class->measure = gtk_gizmo_measure; widget_class->size_allocate = gtk_gizmo_size_allocate; widget_class->snapshot = gtk_gizmo_snapshot; -- 2.30.2